//
// Copyright (c) 2011 Alex Nesterenko
//

#include "nane/core/crt/POSIX/POSIXReadFile_.h"

#include <cassert>
#include <fcntl.h>
#include <unistd.h>

namespace nane 
{
    ////////////////////////////////////////////////////////////////////////////////////////////////
    POSIXReadFile::POSIXReadFile( FileSystem::Implementation* _creator, int _interface, const char* _filename )
        : POSIXFileBase( _interface, _filename )
        , SubSystemProduct<FileSystem::Implementation, POSIXReadFile, IReadFile>( _creator )
    {
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    POSIXReadFile::~POSIXReadFile()
    {
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    uint32 POSIXReadFile::read( byte* _buffer, uint32 _count )
    {
        // file must be opened
        assert( m_interface != -1 );
        ssize_t bytesRead = 0;
        bytesRead = ::read(m_interface, _buffer, sizeof(byte) * _count);
        return static_cast<uint32>(bytesRead);
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
}   // namespace nane

